Graph databases utilize graph structures with nodes (also referred to as “vertices”), edges, and properties to organize and store data. Some graph databases may not be property-based. For example, Resource Description Framework (RDF) may utilize a triple store, where properties are emulated using additional nodes. Regardless, such data structures possess unique properties which allow for powerful and flexible data storage. For example, because every element in a graph provides a direct pointer to adjacent elements, global index lookups are not necessary. Additionally, a graph structure may be defined to label any property of a node, allowing one to easily identify patterns between the connections and interconnections of nodes.
However, graph databases are difficult to navigate and model. Further, significant knowledge of graph theory is required to properly design and manage graph structures. Due to a rise in the popularity of graph databases, simplification is required to allow a broader audience of developers to program for and interact with graph databases. Existing techniques attempt to allow easier interaction with a graph database by mapping graph data to an object by using, for example, an Object Graph Model (OGM).
Conventional techniques related to graph databases suffer one or more drawbacks, such as persistence of object-relational impedance mismatch, which prohibits by-reference pointers. Also, conventional mapping techniques are limited in that they can only represent and return data as it statically exists, because mapping does not modify the relationships of the underlying raw data. These techniques do not take relationships and metadata into context.